/*******************************************************************************
 * Copyright (c) 2000, 2005 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package com.architexa.org.eclipse.gef.handles;

import com.architexa.org.eclipse.draw2d.Cursors;
import com.architexa.org.eclipse.draw2d.Locator;
import com.architexa.org.eclipse.gef.DragTracker;
import com.architexa.org.eclipse.gef.GraphicalEditPart;
import com.architexa.org.eclipse.gef.tools.ResizeTracker;

import org.eclipse.swt.graphics.Cursor;



/**
 * A Handle used to resize a GraphicalEditPart.
 */
public class ResizeHandle
	extends SquareHandle
{

private int cursorDirection = 0;

/**
 * Creates a new ResizeHandle for the given GraphicalEditPart.
 * <code>direction</code> is the relative direction from the 
 * center of the owner figure.  For example, <code>SOUTH_EAST</code>
 * would place the handle in the lower-right corner of its
 * owner figure.  These direction constants can be found in
 * {@link com.architexa.org.eclipse.draw2d.PositionConstants}.
 * @param owner owner of the ResizeHandle
 * @param direction relative direction from the center of the owner figure
 */
public ResizeHandle(GraphicalEditPart owner, int direction) {
	setOwner(owner);
	setLocator(new RelativeHandleLocator(owner.getFigure(), direction));
	setCursor(Cursors.getDirectionalCursor(direction, owner.getFigure().isMirrored()));
	cursorDirection = direction;
}

/**
 * Creates a new ResizeHandle for the given GraphicalEditPart.
 * 
 * @see SquareHandle#SquareHandle(GraphicalEditPart, Locator, Cursor)
 */
public ResizeHandle(GraphicalEditPart owner, Locator loc, Cursor c) {
	super(owner, loc, c);
}

/**
 * Returns <code>null</code> for the DragTracker.
 * @return returns <code>null</code>
 */
protected DragTracker createDragTracker() {
	return new ResizeTracker(getOwner(), cursorDirection);
}

}
